package com.iknight.theory.api;

import com.github.pagehelper.PageInfo;
import com.iknight.mgr.core.base.BaseService;
import com.iknight.theory.model.SegPowerInfo;
import com.iknight.theory.model.TPTranPDeModel;
import com.iknight.theory.model.TPowerTranModel;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author JeryZym
 * @date 2017/12/20
 */
public interface TeRecordService<T extends Serializable, PK extends Serializable> extends BaseService<T, PK> {
    /**
     * 批量保存
     *
     * @param entities
     */
    void batchSave(List<T> entities);

    /**
     * 获取电量数据
     *
     * @param param
     * @return
     */
    List<Map> getPowerByParam(Map param);

    PageInfo<Map> getConsPowerByParam(Map param);

    /**
     * 保存计算结果
     *
     * @param entity
     * @param entities
     */
    void saveCaledTranPower(TPowerTranModel entity, TPTranPDeModel tpTranPDeModel, List<SegPowerInfo> entities);

    PageInfo<Map> getTranPowerData(Map param);

    /**
     * 根据主记录ID删除电量数据
     *
     * @param recordId
     */
    void removePowerDataByRecord(String recordId);

    /**
     * 获取分段电量
     *
     * @param param
     * @return
     */
    PageInfo<Map> getSegPowerByRecord(Map param);

    /**
     * 根据主记录ID获取计算日志
     *
     * @param recordId
     * @return
     */
    Object getCalLogByRecordId(String recordId);

    /**
     * 根据主记录ID获取分段电量
     *
     * @param param
     * @return
     */
    List<Map> getSegPowerByMainRecordId(Map param);

    /**
     * 根据记录ID获取配变线损信息
     *
     * @param param
     * @return
     */
    List<Map> getTranPowerByRecordId(Map param);

    /**
     * 获取台区变压器查询区间内数据
     *
     * @param param
     * @return
     */
    List<Map> getTranPowerByParam(Map param);
}
